home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Games Collection 1
/
software vault.zip
/
software vault
/
CDR10
/
YICN23.ZIP
/
SOURCE
/
MAPEDIT.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1992-11-22
|
5KB
|
114 lines
#include "animap.h"
#include "actor.h"
#include "xlib.h"
#include "xtext.h"
#include "xrect.h"
#include "yakpal.h"
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
void main(int argcount, char ** argvector)
{
x_set_mode(2, 380);
x_set_doublebuffer(260);
x_text_init();
yakLib myYakLib("draw");
yakPalette myYakPalette("standard.ypl", &myYakLib);
myYakPalette.put();
char filename[20];
word thismap_numIcons, thismap_squareWidth, thismap_width, thismap_height;
animap * mymap;
if (argcount == 2)
{
mymap = new animap(argvector[1], &myYakLib);
}
else if (argcount == 6)
{
thismap_numIcons = atoi(argvector[1]);
thismap_squareWidth = atoi(argvector[2]);
thismap_width = atoi(argvector[3]);
thismap_height = atoi(argvector[4]);
mymap = new animap(thismap_numIcons, thismap_squareWidth, thismap_width,
thismap_height);
mymap->loadIcon(0, argvector[5]);
for (int counter = 1; counter < thismap_numIcons; ++counter)
mymap->loadIcon(counter, "grid24");
for (int width_counter = 0; width_counter < thismap_width; ++width_counter)
for (int height_counter = 0; height_counter < thismap_height; ++height_counter)
mymap->setSquare(width_counter, height_counter, 0);
}
else
{
x_text_mode();
cout << "\n\nMAPEDIT v1.0 21 oct 1992 by Victor B. Putz\n\nUsage: \n";
cout << "mapedit filename\n -- edit map file [filename]\n";
cout << "mapedit n1 n2 n3 n4 filename\n -- start a new map with n1 max icons, n2 square width,\n";
cout << " n3 width, n4 height, with background icon filename (omit .drw).\n\n";
exit(EXIT_FAILURE);
}
int terrain_number = 0;
animactor myactor;
myactor.thisFrame = mymap->iconTable[terrain_number].firstFrame;
myactor.squareX = mymap->squareWidth-1;
myactor.squareY = mymap->squareWidth-1;
myactor.mymap = mymap;
myactor.put(0,0);
char exitchar = 'd';
while (exitchar != 'X')
{
mymap->show(myactor.mapX,myactor.mapY, 220 - myactor.squareX,150 - myactor.squareY, 6,4, HiddenPageOffs);
x_rect_fill(20,20,30,220,HiddenPageOffs,0); //left
x_rect_fill(330,20,380,220,HiddenPageOffs,0); //right
x_rect_fill(20,20,60,60, HiddenPageOffs,0); //coords box
// x_rect_fill(20,215,380,220,HiddenPageOffs,0); //bottom
// x_rect_fill(20,20,380,220, HiddenPageOffs, 0); //top
x_printf(20,20,HiddenPageOffs, 10, "X: %d", myactor.mapX);
x_printf(20,30,HiddenPageOffs, 10, "Y: %d", myactor.mapY);
x_printf(20,40,HiddenPageOffs, 10, "IC:%d", terrain_number);
x_page_flip(20,20);
if (kbhit())
{
exitchar = getch();
if (exitchar == 0)
exitchar = getch();
switch(exitchar)
{
case 72 : myactor.addCommand(scriptNode::fineSlide, 1, 0,0, -mymap->squareWidth); break;
case 80 : myactor.addCommand(scriptNode::fineSlide, 1, 0,0, mymap->squareWidth); break;
case 75 : myactor.addCommand(scriptNode::fineSlide, 1, 0, -mymap->squareWidth, 0); break;
case 77 : myactor.addCommand(scriptNode::fineSlide, 1, 0, mymap->squareWidth,0); break;
case 71 : myactor.addCommand(scriptNode::fineSlide, 1, 0,-mymap->squareWidth, -mymap->squareWidth); break;
case 73 : myactor.addCommand(scriptNode::fineSlide, 1, 0,mymap->squareWidth, -mymap->squareWidth); break;
case 79 : myactor.addCommand(scriptNode::fineSlide, 1, 0,-mymap->squareWidth, mymap->squareWidth); break;
case 81 : myactor.addCommand(scriptNode::fineSlide, 1, 0,mymap->squareWidth, mymap->squareWidth); break;
case '>' : ++terrain_number;
if (terrain_number == mymap->numIcons)
terrain_number = 0;
myactor.thisFrame = mymap->iconTable[terrain_number].firstFrame;
break;
case '<' : --terrain_number;
if (terrain_number < 0)
terrain_number = (mymap->numIcons - 1);
myactor.thisFrame = mymap->iconTable[terrain_number].firstFrame;
break;
case ' ' : mymap->setSquare(myactor.mapX, myactor.mapY, terrain_number); break;
case 'L' : gets(filename);
mymap->iconTable[terrain_number].firstFrame = NULL;
mymap->loadIcon(terrain_number, filename);
if (mymap->iconTable[terrain_number].firstFrame == NULL)
mymap->loadIcon(terrain_number, "grid24");
mymap->reset();
myactor.thisFrame = mymap->iconTable[terrain_number].firstFrame;
break;
case 'S' : gets(filename);
mymap->save(filename);
break;
} //switch
}
}
x_text_mode();
}